package com.jrx.anytxn.param.dto.product;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 表:利息 请求参数表
 *
 * @author 90443
 * @date 2019-04-30
 */
@ApiModel(description = "利息表InterestTableReq")
public class InterestTableReq implements Serializable {

    private static final long serialVersionUID = 2276327212869033693L;
    /**
     * 主键
     * 表字段:id
     */
    private Long id;

    /**
     * 租戶id
     * 表字段:tenant_id
     */
    private String tenantId;

    /**
     * 利息表id	唯一索引
     * 表字段:interest_id
     */
    private String interestId;

    /**
     * 利息表机构号 唯一索引
     * 表字段:organization_id
     */
    private String organizationId;

    /**
     * 中文名称
     * 表字段:chinese_name
     */
    private String chineseName;

    /**
     * 英文名称
     * 表字段:english_name
     */
    private String englishName;

    /**
     * 状态	1 = 正常0 = 失效
     * 表字段:table_status
     */
    private String tableStatus;

    /**
     * 利息表类型	0 = 消费利息1 = 现金利息
     * 表字段:table_type
     */
    private String tableType;

    /**
     * 基准利率
     * 表字段:base_rate
     */
    private BigDecimal baseRate;

    /**
     * 基准利率浮动百分比
     * 表字段:base_rate_percent
     */
    private BigDecimal baseRatePercent;

    /**
     * 计息基础	0 = 剩余本金1 = 贷款本金
     * 表字段:accrual_basic
     */
    private String accrualBasic;

    /**
     * 利率种类	0 = 日利率 1 = 年利率 2 = 月利率 3 = 季利率4 = 半年利率
     * 表字段:rate_type
     */
    private String rateType;

    /**
     * 利率累积方式	0 = No Accrual  (不计息)1 = Daily Accural（每日计息）2 = Monthly Accrual（每月计息）
     * 表字段:accural_option
     */
    private String accuralOption;

    /**
     * 免息标志	0 = 无免息期1 = 有免息期
     * 表字段:grace_flag
     */
    private String graceFlag;

    /**
     * 起息日选项 	0 = 交易生效日起息1 = 交易入账日起息
     * 表字段:start_date_flag
     */
    private String startDateFlag;

    /**
     * 利率变化类型	0 = 固定1 = 浮动2 = 阶段
     * 表字段:interest_change_type
     */
    private String interestChangeType;

    /**
     * 年利率基准因子	0 = 365 1 = 365，in leap year = 366 2 = 360
     * 表字段:year_base
     */
    private String yearBase;

    /**
     * 月利率基准因子	0 = 每月按30计算 1 = 每月按实际天数计算
     * 表字段:month_base
     */
    private String monthBase;

    /**
     * 还款交易利息回算选项：还款交易交易日小于入账日时，利息是否回算标志 0 = 不回算	 1 = 回算
     * 表字段:payment_back_date_flag
     */
    private String paymentBackDateFlag;

    /**
     * 阶段依据,(当利率变动类型为多阶段时使用)	0 = 按贷款金额划分1 = 按贷款期限划分
     * 表字段:stage_according
     */
    private String stageAccording;

    /**
     * 阶段利率方式	0 = 按比例1 = 按金额
     * 表字段:stage_int_type
     */
    private String stageIntType;

    /**
     * 阶段数量,目前固定3个阶段
     * 表字段:stage_num
     */
    private Integer stageNum;

    /**
     * 价税分离开关 0-开启 1-关闭
     * 表字段:tax_flag
     */
    private String taxFlag;

    /**
     * 税率
     * 表字段:tax_rate
     */
    private BigDecimal taxRate;

    /**
     * 阶段范围1
     * 表字段:stage_range1
     */
    private BigDecimal stageRange1;

    /**
     * 阶段范围2
     * 表字段:stage_range2
     */
    private BigDecimal stageRange2;

    /**
     * 阶段范围3
     * 表字段:stage_range3
     */
    private BigDecimal stageRange3;

    /**
     * 阶段利率1
     * 表字段:stage_rate1
     */
    private BigDecimal stageRate1;

    /**
     * 阶段利率2
     * 表字段:stage_rate2
     */
    private BigDecimal stageRate2;

    /**
     * 阶段利率3
     * 表字段:stage_rate3
     */
    private BigDecimal stageRate3;


    /**
     * 最后更新操作员
     * 表字段:update_by
     */
    private String updateBy;

    /**
     * 抛帐时间
     * 表字段：cast_time
     */
    private String castTime;


    /**
     * 获取主键
     *
     * @return id Long
     */
    public Long getId() {
        return id;
    }

    public String getTaxFlag() {
        return taxFlag;
    }

    public void setTaxFlag(String taxFlag) {
        this.taxFlag = taxFlag;
    }

    public BigDecimal getTaxRate() {
        return taxRate;
    }

    public void setTaxRate(BigDecimal taxRate) {
        this.taxRate = taxRate;
    }


    /**
     * 设置主键
     *
     * @param id
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取利息表id
     *
     * @return interestId String
     */
    public String getInterestId() {
        return interestId;
    }

    /**
     * 设置利息表id
     *
     * @param interestId
     */
    public void setInterestId(String interestId) {
        this.interestId = interestId;
    }

    /**
     * 获取利息表机构号
     *
     * @return organizationId String
     */
    public String getOrganizationId() {
        return organizationId;
    }

    /**
     * 设置利息表机构号
     *
     * @param organizationId
     */
    public void setOrganizationId(String organizationId) {
        this.organizationId = organizationId;
    }

    /**
     * 获取中文名称
     *
     * @return chineseName String
     */
    public String getChineseName() {
        return chineseName;
    }

    /**
     * 设置中文名称
     *
     * @param chineseName
     */
    public void setChineseName(String chineseName) {
        this.chineseName = chineseName;
    }

    /**
     * 获取英文名称
     *
     * @return englishName String
     */
    public String getEnglishName() {
        return englishName;
    }

    /**
     * 设置英文名称
     *
     * @param englishName
     */
    public void setEnglishName(String englishName) {
        this.englishName = englishName;
    }


    public String getTableStatus() {
        return tableStatus;
    }

    public void setTableStatus(String tableStatus) {
        this.tableStatus = tableStatus;
    }

    public String getTableType() {
        return tableType;
    }

    public void setTableType(String tableType) {
        this.tableType = tableType;
    }

    /**
     * 获取基准利率
     *
     * @return baseRate BigDecimal
     */
    public BigDecimal getBaseRate() {
        return baseRate;
    }

    /**
     * 设置基准利率
     *
     * @param baseRate
     */
    public void setBaseRate(BigDecimal baseRate) {
        this.baseRate = baseRate;
    }

    /**
     * 获取基准利率浮动百分比
     *
     * @return baseRatePercent BigDecimal
     */
    public BigDecimal getBaseRatePercent() {
        return baseRatePercent;
    }

    /**
     * 设置基准利率浮动百分比
     *
     * @param baseRatePercent
     */
    public void setBaseRatePercent(BigDecimal baseRatePercent) {
        this.baseRatePercent = baseRatePercent;
    }

    /**
     * 获取计息基础
     *
     * @return accrualBasic String
     */
    public String getAccrualBasic() {
        return accrualBasic;
    }

    /**
     * 设置计息基础
     *
     * @param accrualBasic
     */
    public void setAccrualBasic(String accrualBasic) {
        this.accrualBasic = accrualBasic;
    }

    /**
     * 获取利率种类
     *
     * @return rateType String
     */
    public String getRateType() {
        return rateType;
    }

    /**
     * 设置利率种类
     *
     * @param rateType
     */
    public void setRateType(String rateType) {
        this.rateType = rateType;
    }

    /**
     * 获取利率累积方式
     *
     * @return accuralOption String
     */
    public String getAccuralOption() {
        return accuralOption;
    }

    /**
     * 设置利率累积方式
     *
     * @param accuralOption
     */
    public void setAccuralOption(String accuralOption) {
        this.accuralOption = accuralOption;
    }

    /**
     * 获取免息标志
     *
     * @return graceFlag String
     */
    public String getGraceFlag() {
        return graceFlag;
    }

    /**
     * 设置免息标志
     *
     * @param graceFlag
     */
    public void setGraceFlag(String graceFlag) {
        this.graceFlag = graceFlag;
    }

    /**
     * 获取起息日选项
     *
     * @return startDateFlag String
     */
    public String getStartDateFlag() {
        return startDateFlag;
    }

    /**
     * 设置起息日选项
     *
     * @param startDateFlag
     */
    public void setStartDateFlag(String startDateFlag) {
        this.startDateFlag = startDateFlag;
    }

    /**
     * 获取利率变化类型
     *
     * @return interestChangeType String
     */
    public String getInterestChangeType() {
        return interestChangeType;
    }

    /**
     * 设置利率变化类型
     *
     * @param interestChangeType
     */
    public void setInterestChangeType(String interestChangeType) {
        this.interestChangeType = interestChangeType;
    }


    /**
     * 获取年利率基准因子
     *
     * @return yearBase String
     */
    public String getYearBase() {
        return yearBase;
    }

    /**
     * 设置年利率基准因子
     *
     * @param yearBase
     */
    public void setYearBase(String yearBase) {
        this.yearBase = yearBase;
    }

    /**
     * 获取月利率基准因子
     *
     * @return monthBase String
     */
    public String getMonthBase() {
        return monthBase;
    }

    /**
     * 设置月利率基准因子
     *
     * @param monthBase
     */
    public void setMonthBase(String monthBase) {
        this.monthBase = monthBase;
    }

    /**
     * 获取还款交易利息回算选项：还款交易交易日小于入账日时，利息是否回算标志
     *
     * @return paymentBackDateFlag String
     */
    public String getPaymentBackDateFlag() {
        return paymentBackDateFlag;
    }

    /**
     * 设置还款交易利息回算选项：还款交易交易日小于入账日时，利息是否回算标志
     *
     * @param paymentBackDateFlag
     */
    public void setPaymentBackDateFlag(String paymentBackDateFlag) {
        this.paymentBackDateFlag = paymentBackDateFlag;
    }

    /**
     * 获取阶段依据,(当利率变动类型为多阶段时使用)
     *
     * @return stageAccording String
     */
    public String getStageAccording() {
        return stageAccording;
    }

    /**
     * 设置阶段依据,(当利率变动类型为多阶段时使用)
     *
     * @param stageAccording
     */
    public void setStageAccording(String stageAccording) {
        this.stageAccording = stageAccording;
    }

    /**
     * 获取阶段利率方式
     *
     * @return stageIntType String
     */
    public String getStageIntType() {
        return stageIntType;
    }

    /**
     * 设置阶段利率方式
     *
     * @param stageIntType
     */
    public void setStageIntType(String stageIntType) {
        this.stageIntType = stageIntType;
    }

    /**
     * 获取阶段数量,目前固定3个阶段
     *
     * @return stageNum Integer
     */
    public Integer getStageNum() {
        return stageNum;
    }

    /**
     * 设置阶段数量,目前固定3个阶段
     *
     * @param stageNum
     */
    public void setStageNum(Integer stageNum) {
        this.stageNum = stageNum;
    }

    /**
     * 获取阶段范围1
     *
     * @return stageRange1 BigDecimal
     */
    public BigDecimal getStageRange1() {
        return stageRange1;
    }

    /**
     * 设置阶段范围1
     *
     * @param stageRange1
     */
    public void setStageRange1(BigDecimal stageRange1) {
        this.stageRange1 = stageRange1;
    }

    /**
     * 获取阶段范围2
     *
     * @return stageRange2 BigDecimal
     */
    public BigDecimal getStageRange2() {
        return stageRange2;
    }

    /**
     * 设置阶段范围2
     *
     * @param stageRange2
     */
    public void setStageRange2(BigDecimal stageRange2) {
        this.stageRange2 = stageRange2;
    }

    /**
     * 获取阶段范围3
     *
     * @return stageRange3 BigDecimal
     */
    public BigDecimal getStageRange3() {
        return stageRange3;
    }

    /**
     * 设置阶段范围3
     *
     * @param stageRange3
     */
    public void setStageRange3(BigDecimal stageRange3) {
        this.stageRange3 = stageRange3;
    }

    /**
     * 获取阶段利率1
     *
     * @return stageRate1 BigDecimal
     */
    public BigDecimal getStageRate1() {
        return stageRate1;
    }

    /**
     * 设置阶段利率1
     *
     * @param stageRate1
     */
    public void setStageRate1(BigDecimal stageRate1) {
        this.stageRate1 = stageRate1;
    }

    /**
     * 获取阶段利率2
     *
     * @return stageRate2 BigDecimal
     */
    public BigDecimal getStageRate2() {
        return stageRate2;
    }

    /**
     * 设置阶段利率2
     *
     * @param stageRate2
     */
    public void setStageRate2(BigDecimal stageRate2) {
        this.stageRate2 = stageRate2;
    }

    /**
     * 获取阶段利率3
     *
     * @return stageRate3 BigDecimal
     */
    public BigDecimal getStageRate3() {
        return stageRate3;
    }

    /**
     * 设置阶段利率3
     *
     * @param stageRate3
     */
    public void setStageRate3(BigDecimal stageRate3) {
        this.stageRate3 = stageRate3;
    }


    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getUpdateBy() {
        return updateBy;
    }

    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }

    public String getCastTime() {
        return castTime;
    }

    public void setCastTime(String castTime) {
        this.castTime = castTime;
    }
}